home *** CD-ROM | disk | FTP | other *** search
- ; -*- Mode: Lisp; Syntax: Common-Lisp; Package: SCHEME-TRANSLATOR; -*-
-
- ; This file was generated by Pseudoscheme 2.8a
- ; running in Lucid Common Lisp 4.0.1
- ; from file /amd/night/b/jar/pseudo/schemify.scm
-
- (SCHI:BEGIN-TRANSLATED-FILE)
- (DEFUN SCHEMIFY-TOP
- (NODE)
- (SCHEMIFY NODE 'NIL))
- (SCHI:SET-VALUE-FROM-FUNCTION 'SCHEMIFY-TOP
- 'SCHEME::SCHEMIFY-TOP)
- (DEFUN SCHEMIFY
- (NODE ENV)
- (IF (SCHI:TRUEP (NODE? NODE))
- (CASE (NODE-TYPE NODE)
- ((SCHEME::PROGRAM-VARIABLE) (PROGRAM-VARIABLE-NAME NODE))
- ((SCHEME::LOCAL-VARIABLE)
- (LET ((PROBE (SCHI:TRUE? (ASSOC NODE ENV :TEST #'EQ))))
- (IF (SCHI:TRUEP PROBE)
- (CDR PROBE)
- (LOCAL-VARIABLE-NAME NODE))))
- ((SCHEME::CALL) (SCHEMIFY-CALL NODE ENV))
- ((SCHEME::CONSTANT)
- (LET ((VAL (CONSTANT-VALUE NODE)))
- (IF (OR (NUMBERP VAL)
- (CHARACTERP VAL)
- (SIMPLE-STRING-P VAL)
- (SCHI:BOOLEANP VAL))
- VAL
- (CONS 'SCHEME::QUOTE
- (LIST VAL)))))
- ((SCHEME::LAMBDA)
- (LET ((VARS (LAMBDA-VARS NODE)))
- (LET ((NEW-VARS
- (MAPCAR
- #'(LAMBDA (VAR) (EXTERNALIZE-VARIABLE VAR ENV))
- VARS)))
- (CONS 'SCHEME::LAMBDA
- (CONS NEW-VARS
- (SCHEMIFY-BODY (LAMBDA-BODY NODE)
- (SCHEMIFY-BIND VARS
- NEW-VARS
- ENV)))))))
- ((SCHEME::LETREC)
- (LET ((VARS (LETREC-VARS NODE)))
- (LET ((VALS (LETREC-VALS NODE)))
- (LET ((NEW-VARS
- (MAPCAR
- #'(LAMBDA (VAR)
- (EXTERNALIZE-VARIABLE VAR ENV))
- VARS)))
- (LET ((ENV@0 (SCHEMIFY-BIND VARS NEW-VARS ENV)))
- (CONS 'SCHEME::LETREC
- (CONS
- (MAPCAR
- #'(LAMBDA (VAR VAL)
- (CONS VAR
- (LIST (SCHEMIFY VAL ENV@0))))
- NEW-VARS
- VALS)
- (SCHEMIFY-BODY (LETREC-BODY NODE)
- ENV@0))))))))
- ((SCHEME::IF)
- (LET ((TEST (SCHEMIFY (IF-TEST NODE)
- ENV))
- (CON (SCHEMIFY (IF-CON NODE) ENV))
- (ALT (SCHEMIFY (IF-ALT NODE) ENV)))
- (CONS 'SCHEME::IF
- (CONS TEST
- (CONS CON (LIST ALT))))))
- ((SCHEME::SET!)
- (CONS 'SCHEME::SET!
- (CONS (SCHEMIFY (SET!-LHS NODE)
- ENV)
- (LIST (SCHEMIFY (SET!-RHS NODE)
- ENV)))))
- ((SCHEME::BEGIN)
- (CONS 'SCHEME::BEGIN
- (CONS (SCHEMIFY (BEGIN-FIRST NODE)
- ENV)
- (UNBEGINIFY
- (SCHEMIFY (BEGIN-SECOND NODE)
- ENV)))))
- ((SCHEME::DEFINE)
- (LET ((VAR (SCHEMIFY (DEFINE-LHS NODE)
- ENV)))
- (IF (NOT (SCHI:SCHEME-SYMBOL-P VAR))
- (.ERROR "defining a non-variable -- shouldn't happen"
- VAR))
- (CONS 'SCHEME::DEFINE
- (CONS VAR
- (LIST (SCHEMIFY (DEFINE-RHS NODE)
- ENV))))))
- (OTHERWISE (CONS 'SCHEME::UNKNOWN-NODE-TYPE
- (LIST NODE))))
- NODE))
- (SCHI:SET-VALUE-FROM-FUNCTION 'SCHEMIFY
- 'SCHEME::SCHEMIFY)
- (DEFUN SCHEMIFY-CALL
- (NODE ENV)
- (DECLARE (SPECIAL REVISED^4-SCHEME-ENV))
- (LET ((PROC (CALL-PROC NODE)))
- (LET ((ARGS (CALL-ARGS NODE)))
- (FLET
- ((PUNT NIL
- (CONS (SCHEMIFY PROC ENV)
- (MAPCAR
- #'(LAMBDA (SUBNODE) (SCHEMIFY SUBNODE ENV))
- ARGS))))
- (CASE (NODE-TYPE PROC)
- ((SCHEME::LAMBDA)
- (LET ((PROC-EXP (SCHEMIFY PROC ENV)))
- (CONS 'SCHEME::LET
- (CONS
- (MAPCAR
- #'(LAMBDA (VAR ARG)
- (CONS VAR (LIST (SCHEMIFY ARG ENV))))
- (CADR PROC-EXP)
- ARGS)
- (CDDR PROC-EXP)))))
- ((SCHEME::PROGRAM-VARIABLE)
- (IF (EQ (PROGRAM-VARIABLE-CL-SYMBOL PROC)
- (PROGRAM-ENV-LOOKUP REVISED^4-SCHEME-ENV
- 'SCHEME::AND-AUX))
- (CONS 'SCHEME::AND
- (CONS (SCHEMIFY (CAR ARGS) ENV)
- (LIST (DETHUNKIFY (CADR ARGS)
- ENV))))
- (IF (EQ (PROGRAM-VARIABLE-CL-SYMBOL PROC)
- (PROGRAM-ENV-LOOKUP REVISED^4-SCHEME-ENV
- 'SCHEME::OR-AUX))
- (CONS 'SCHEME::OR
- (CONS (SCHEMIFY (CAR ARGS) ENV)
- (LIST (DETHUNKIFY (CADR ARGS)
- ENV))))
- (IF (EQ (PROGRAM-VARIABLE-CL-SYMBOL PROC)
- (PROGRAM-ENV-LOOKUP REVISED^4-SCHEME-ENV
- 'SCHEME::CASE-AUX))
- (CONS 'SCHEME::CASE
- (CONS (SCHEMIFY (CAR ARGS)
- ENV)
- (APPEND
- (MAPCAR
- #'(LAMBDA (KEYS ARG)
- (CONS KEYS
- (UNBEGINIFY
- (DETHUNKIFY ARG ENV))))
- (CONSTANT-VALUE (CADR ARGS))
- (CDDDR ARGS))
- (LIST
- (CONS 'SCHEME::ELSE
- (LIST
- (DETHUNKIFY
- (CADDR ARGS)
- ENV)))))))
- (PUNT)))))
- (OTHERWISE (PUNT)))))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'SCHEMIFY-CALL
- 'SCHEME::SCHEMIFY-CALL)
- (DEFUN DETHUNKIFY
- (NODE ENV)
- (IF (AND (SCHI:TRUEP (LAMBDA? NODE))
- (NULL (LAMBDA-VARS NODE)))
- (SCHEMIFY (LAMBDA-BODY NODE) ENV)
- (LIST (SCHEMIFY NODE ENV))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'DETHUNKIFY
- 'SCHEME::DETHUNKIFY)
- (DEFUN SCHEMIFY-BODY
- (NODE ENV)
- (UNBEGINIFY (SCHEMIFY NODE ENV)))
- (SCHI:SET-VALUE-FROM-FUNCTION 'SCHEMIFY-BODY
- 'SCHEME::SCHEMIFY-BODY)
- (DEFUN UNBEGINIFY
- (.EXP)
- (IF (SCHI:TRUEP (CAR-IS? .EXP 'SCHEME::BEGIN))
- (CDR .EXP)
- (LIST .EXP)))
- (SCHI:SET-VALUE-FROM-FUNCTION 'UNBEGINIFY
- 'SCHEME::UNBEGINIFY)
- (DEFUN EXTERNALIZE-VARIABLE
- (VAR ENV)
- (LET ((NAME (LOCAL-VARIABLE-NAME VAR)))
- (IF (SCHI:TRUEP (RASSQ NAME ENV))
- (MAKE-NAME-FROM-UID NAME (GENERATE-UID))
- NAME)))
- (SCHI:SET-VALUE-FROM-FUNCTION 'EXTERNALIZE-VARIABLE
- 'SCHEME::EXTERNALIZE-VARIABLE)
- (DEFUN SCHEMIFY-BIND
- (VARS NAMES ENV)
- (APPEND (MAPCAR #'CONS VARS NAMES)
- ENV))
- (SCHI:SET-VALUE-FROM-FUNCTION 'SCHEMIFY-BIND
- 'SCHEME::SCHEMIFY-BIND)
-